<?php
/**
 * @author		João Batista Neto
 * @brief		Objetos que representam cada tipo do retorno da API
 * @package		dso.buscape.result.type
 */

require_once 'dso/buscape/result/type/BuscapeLeaf.php';

/**
 * @brief		Avaliação
 * @class		BuscapeRating
 * @ingroup		Types
 */
class BuscapeRating extends BuscapeLeaf {
	/**
	 * @brief	Número de comentários
	 * @var		integer
	 */
	private $numComments;

	/**
	 * @brief	Média das notas dos usuários
	 * @var		float
	 */
	private $rating;

	/**
	 * @brief	Links da avaliação
	 * @var		RecursiveComponentIterator
	 */
	private $links;

	/**
	 * @brief	Avaliação por especificação
	 * @var		BuscapeSpecification
	 */
	private $specification;

	/**
	 * @brief	Avaliação eBit
	 * @var		BuscapeRating
	 */
	private $eBitRating;

	/**
	 * @brief	Cria uma instância do objeto com os argumentos passados
	 * @param	$args array Lista de argumentos que serão utilizados para criação do objeto
	 * @return	BuscapeRating
	 */
	public static function createInstance( array $args ){
		$userAverageRating = new BuscapeRating();

		foreach ( $args as $property => $value ){
			$userAverageRating->$property = $value;
		}

		return $userAverageRating;
	}

	/**
	 * @brief	Recupera a avaliação eBit
	 * @return	BuscapeRating
	 */
	public function getEBitRating(){
		return $this->eBitRating;
	}

	/**
	 * @return the $numComments
	 */
	public function getNumComments() {
		return $this->numComments;
	}

	/**
	 * @return the $rating
	 */
	public function getRating() {
		return $this->rating;
	}

	/**
	 * @return the $links
	 */
	public function getLinks() {
		return $this->links;
	}

	/**
	 * @return the $specification
	 */
	public function getSpecification() {
		return $this->specification;
	}
}